package com.qf.service;

import com.qf.dao.UserDao;
import com.qf.dao.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.util.Constants;
import com.qf.util.MD5Utils;
import com.qf.util.RandomUtils;
import sun.security.util.Password;

/**
 * @author LiXuekai on 2022/5/23
 */
public class UserServletImpl implements UserService {
    @Override
    public User longin(String username, String password) {
        //1根据用户名到数据库查询用户对对象
        UserDao userDao = new UserDaoImpl();
        User user = userDao.findByUserName(username);
        //2判断用户名是否为空  如果为空用户名错误
        if (user == null) {
            return null;
        }
        //3 判断用户是否激活 如果不激活不让登录
        if (!Constants.USER_ACTIVE.equals(user.getStatus())) {
            return null;
        }
        //4判断角色是否为消费者 如果不是消费者不让登录
        if (Constants.ROLE_ADMIN == user.getRole()) {
            return null;
        }
        //5校验密码是否正确 使用md5对用户输入的密码进行加密将加密后的密文和数据库的
        //明文进行对比 如果一致证明密码正确  如果不一致证明密码输入有误
        String md5password = MD5Utils.md5(password);
        if (md5password.equals(user.getPassword())) {
            return user;
        }
        return null;
    }

    @Override
    public boolean check(String username) {
        //根据用户名带数据库查询对象
        UserDao userDao = new UserDaoImpl();
        User user = userDao.findByUserName(username);
        //判断用户是否可以查询到
        if (user == null) {
            //用户不存在用户名可用
            return true;
        } else {
            //用户不存在
            return false;
        }
    }

    @Override
    public int createUser(User user) {
        //1 密码使用MD5 进行加密
        String passwordmd5 = MD5Utils.md5("password");
        user.setPassword(passwordmd5);
        //2 设置消费者默认为激活状态
        user.setStatus(Constants.USER_ACTIVE);
        //3.初始化用户角色为消费者
        user.setRole(Constants.ROLE_ADMIN);
        //初始化  消费者随机的激活吗
        user.setCode(RandomUtils.createActive());
        //调用dao完成添加功能
        UserDao userDao = new UserDaoImpl();
        int count = userDao.addUser(user);
        return count;


    }
}